package io.github.wslxm.springbootplus2.core.utils;

import com.google.common.base.CaseFormat;
import org.apache.commons.lang3.reflect.FieldUtils;

import java.lang.reflect.Field;
import java.util.LinkedList;

/**
 * 字段获取工具类
 */
public class XjFieldUtil {

    /**
     * 获取类中所有字段名（排除serialVersionUID）
     * @param t
     * @param isUnderline 是否将响应数据转为下划线格式
     * @return
     * @param <T>
     */
    public static <T> LinkedList<String> getFieldNames(Class<T> t, boolean isUnderline) {
        Field[] allFields = FieldUtils.getAllFields(t);
        LinkedList<String> names = new LinkedList<>();
        for (Field field : allFields) {
            String name = field.getName();
            if (name.equals("serialVersionUID")) {
                continue;
            }
            if(isUnderline){
                name = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, name);
            }
            names.add(name);
        }
        return names;
    }
}
